/********************************************************************
 *@brief Define various macros
 *@author wcf
 *@date 2025-01-11
********************************************************************/

#ifndef __CS_CORE_GLOBAL_H__
#define __CS_CORE_GLOBAL_H__

#ifdef CSCORE_EXPORTS
#define CSCORE_EXPORT __declspec(dllexport)
#else
#define CSCORE_EXPORT __declspec(dllimport)
#endif //!CSCORE_EXPORTS

#define CS_UNUSED(x) (void)x
#define CS_CONST const
#define CS_NOT_CONST
#define CS_VIRTUAL virtual
#define CS_NOT_VIRTUAL
#define CS_OVERRIDE override
#define CS_NOT_OVERRIDE
#define CS_USE_NAMESPACE(Namespace) using namespace Namespace;
#define CS_DISABLE_COPY(Class)\
		Class(const Class&) = delete;\
		Class& operator=(const Class&) = delete;

#define CS_NAMESPACE cs
#define CS_NAMESPACE_BEGIN namespace CS_NAMESPACE {
#define CS_NAMESPACE_END }

#include <iostream>
#include <list>
#include <map>

CS_NAMESPACE_BEGIN

using csString = std::string;
template <typename T>
using csList = std::list<T>;
template <typename keyT, typename valueT>
using csMap = std::map<keyT, valueT>;

CS_NAMESPACE_END

#endif // !__CS_CORE_GLOBAL_H__
